package com.ydlclass;

import com.ydlclass.core.HeartbeatDetector;
import com.ydlclass.discovery.RegistryConfig;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

@Slf4j
public class ConsumerApplication {
    public static void main(String[] args) {
        // 想尽一切方法获取代理对象，使用ReferenceConfig进行封装
        // reference一定有生成代理的模板方法，get()
        ReferenceConfig<HelloYrpc> reference = new ReferenceConfig<>();
        reference.setInterface(HelloYrpc.class);


        //代理做的事：
        // 1.连接注册中心
        // 2.拉取服务列表
        // 3.选择一个服务并建立连接
        // 4.发送请求，携带一些消息(接口名，参数列表，方法名)，获得结果
        YrpcBootstrap.getInstance()
                .application("first-yrpc-consumer")
                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
                .serialize("hessian")
                .compress("gzip")
                .group("primary")
                .reference(reference);


        //获取一个代理对象
        HelloYrpc helloYrpc = reference.get();
        for (int i = 0; i < 500; i++) {
            String sayHi = helloYrpc.sayHi("你好");
            log.info("sayHi-->{}", sayHi);
        }
    }
}
